﻿using System;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
//using System.Windows.Forms;

namespace Baza
{
    public static class BazaDanych
    {
        //Dodana nowa klasa - czas (przeniesiona) - pamietaj o zmianie wszedzie referencji do niej z <czas> na <BazaDanych.czas>
        #region czas
        public class czas
        {
            public DateTime dataOd;
            public DateTime dataDo;
            public czas(DateTime dataOd, DateTime dataDo)
            {
                if (dataDo.CompareTo(dataOd) >= 0)
                {
                    if (dataOd.CompareTo(DateTime.Today) >= 0)
                    {
                        this.dataOd = dataOd;
                        this.dataDo = dataDo;
                    }
                    else
                    {
                        //MessageBox.Show("Data początkowa nie może być wcześniejsza niż dzisiejsza!");
                        this.dataOd = DateTime.Today;
                        this.dataDo = DateTime.Today;
                    }
                }
                else
                {
                    //MessageBox.Show("Data końcowa nie może być wcześniejsza niż data początkowa!");
                    this.dataOd = DateTime.Today;
                    this.dataDo = DateTime.Today;
                }
            }

            public void setDates(DateTime dataOd, DateTime dataDo)
            {
                if (dataDo.CompareTo(dataOd) >= 0)
                {
                    if (dataOd.CompareTo(DateTime.Today) >= 0)
                    {
                        this.dataOd = dataOd;
                        this.dataDo = dataDo;
                    }
                    else
                    {
                        //MessageBox.Show("Data początkowa nie może być wcześniejsza niż dzisiejsza!");
                        this.dataOd = DateTime.Today;
                        this.dataDo = DateTime.Today;
                    }
                }
                else
                {
                    //MessageBox.Show("Data końcowa nie może być wcześniejsza niż data początkowa!");
                    this.dataOd = DateTime.Today;
                    this.dataDo = DateTime.Today;
                }
            }
        }
        #endregion //czas

        #region GetTypy

        public static Typ[] GetTypy()
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

                connection.Open();
                command.CommandText = "select id_typ, nazwa from typy";
                Reader = command.ExecuteReader();

                List<Typ> lista = new List<Typ>();

                string id = null;
                string nazwa = null;

                while (Reader.Read())
                {
                        id = Reader[0].ToString();
                        nazwa = Reader[1].ToString();
                        lista.Add(new Typ(nazwa,id));
                }
                connection.Close();

                Typ[] tablica = new Typ[lista.Count];
                foreach(Typ t in lista){
                    tablica[lista.IndexOf(t)] = t;
                }
            return tablica;
        }

        #endregion // GetTypy

        #region GetPodtypy

        public static Podtyp[] GetPodtypy(Typ typ)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            connection.Open();
            command.CommandText = "select id_podtyp, nazwa from podtypy where id_typ = " + typ.TypId;
            Reader = command.ExecuteReader();

            List<Podtyp> lista = new List<Podtyp>();

            string id = null;
            string nazwa = null;

            while (Reader.Read())
            {
                id = Reader[0].ToString();
                nazwa = Reader[1].ToString();
                lista.Add(new Podtyp(nazwa, id));
            }
            connection.Close();

            Podtyp[] tablica = new Podtyp[lista.Count];
            foreach (Podtyp t in lista)
            {
                tablica[lista.IndexOf(t)] = t;
            }
            return tablica;
        }

        #endregion // GetPodtypy

        #region GetRodzaje

        public static Rodzaj[] GetRodzaje(Podtyp podtyp)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            connection.Open();
            command.CommandText = "select id_rodzaj, nazwa from rodzaje where id_podtyp = " + podtyp.PodtypId;
            Reader = command.ExecuteReader();

            List<Rodzaj> lista = new List<Rodzaj>();

            string id = null;
            string nazwa = null;

            while (Reader.Read())
            {
                id = Reader[0].ToString();
                nazwa = Reader[1].ToString();
                lista.Add(new Rodzaj(nazwa, id));
            }
            connection.Close();

            Rodzaj[] tablica = new Rodzaj[lista.Count];
            foreach (Rodzaj t in lista)
            {
                tablica[lista.IndexOf(t)] = t;
            }
            return tablica;
        }

        #endregion // GetRodzaje

        #region GetPracownicy

        public static Pracownik[] GetPracownicy()
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            connection.Open();
            command.CommandText = "select imie, nazwisko, id_pracownik, pesel, placa, login, haslo from pracownicy";
            Reader = command.ExecuteReader();

            List<Pracownik> lista = new List<Pracownik>();

            string imie = null;
            string nazwisko = null;
            string id = null;
            string pesel = null;
            string placa = null;
            string login = null;
            string haslo = null;

            while (Reader.Read())
            {
                imie = Reader[0].ToString();
                nazwisko = Reader[1].ToString();
                id = Reader[2].ToString();
                pesel = Reader[3].ToString();
                placa = Reader[4].ToString();
                login = Reader[5].ToString();
                haslo = Reader[6].ToString();
                lista.Add(new Pracownik(imie,nazwisko,id,pesel,placa, login, haslo));
            }
            connection.Close();

            Pracownik[] tablica = new Pracownik[lista.Count];
            foreach (Pracownik t in lista)
            {
                tablica[lista.IndexOf(t)] = t;
            }
            return tablica;
        }

        #endregion // GetPracownicy

        #region GetUzytkownicy

        public static Uzytkownik[] GetUzytkownicy()
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            connection.Open();
            command.CommandText = "select imie, nazwisko, id_uzytkownik, pesel, adres, czarna_lista, raz, zweryfikowano, login, haslo, telefon, email from uzytkownicy";
            Reader = command.ExecuteReader();

            List<Uzytkownik> lista = new List<Uzytkownik>();

            string imie = null;
            string nazwisko = null;
            string id = null;
            string pesel = null;
            string adres = null;
            string czarna_listaS;
            string razS;
            string zweryfikowanoS;
            bool czarna_lista;
            int raz;
            bool zweryfikowano;
            string login = null;
            string haslo = null;
            string telefon = null;
            string email = null;

            while (Reader.Read())
            {
                imie = Reader[0].ToString();
                nazwisko = Reader[1].ToString();
                id = Reader[2].ToString();
                pesel = Reader[3].ToString();
                adres = Reader[4].ToString();
                czarna_listaS = Reader[5].ToString();
                razS = Reader[6].ToString();
                zweryfikowanoS = Reader[7].ToString();
                czarna_lista = System.Convert.ToBoolean(czarna_listaS);
                raz = System.Convert.ToInt32(razS);
                zweryfikowano = System.Convert.ToBoolean(zweryfikowanoS);
                login = Reader[8].ToString();
                haslo = Reader[9].ToString();
                telefon = Reader[10].ToString();
                email = Reader[11].ToString();
                lista.Add(new Uzytkownik(imie, nazwisko, id, pesel, adres, czarna_lista, raz, zweryfikowano, login, haslo, telefon, email));
            }
            connection.Close();

            Uzytkownik[] tablica = new Uzytkownik[lista.Count];
            foreach (Uzytkownik t in lista)
            {
                tablica[lista.IndexOf(t)] = t;
            }
            return tablica;
        }

        #endregion // GetUzytkownicy

        #region GetSprzet (z ograniczeniem czasowym)

        public static Sprzet[] GetSprzet(string typ, string podtyp, string rodzaj, string select, DateTime dataOd, DateTime dataDo)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            connection.Open();

            #region UstawianieZapytań

            if ((typ == "") && (podtyp == "") && (rodzaj == "") && (select == ""))
            {
                //wybrano wszystko z ograniczeniem czasowym
                command.CommandText = "select nazwa, id_sprzet, cena, producent, rozmiar, wzrost, waga, dostepny, uszkodzony, do_konserwacji, obrazek, plec from sprzet";
            }
            else if ((typ != "") && (podtyp != "") && (rodzaj != "") && (select == ""))
            {
                //wybrano rodzaj z ograniczeniem czasowym
                command.CommandText = "select sprzet.nazwa, sprzet.id_sprzet, sprzet.cena, sprzet.producent, "
                                    + "sprzet.rozmiar, sprzet.wzrost, sprzet.waga, sprzet.dostepny, "
                                    + "sprzet.uszkodzony, sprzet.do_konserwacji, sprzet.obrazek, sprzet.plec "
                                    + "from sprzet, rodzaje where "
                                    + "sprzet.id_rodzaj = rodzaje.id_rodzaj and "
                                    + "rodzaje.nazwa = '" + rodzaj + "' and "
                                    + "rodzaje.id_podtyp = (select podtypy.id_podtyp from podtypy, typy "
                                    + "where podtypy.nazwa = '"+podtyp+"' and podtypy.id_typ=typy.id_typ and typy.nazwa='"+typ+"')";
            }
            else if ((typ != "") && (podtyp != "") && (rodzaj == "") && (select == ""))
            {
                //wybrano podtyp z ograniczeniem czasowym
                command.CommandText = "select sprzet.nazwa, sprzet.id_sprzet, sprzet.cena, sprzet.producent, "
                                    + "sprzet.rozmiar, sprzet.wzrost, sprzet.waga, sprzet.dostepny, "
                                    + "sprzet.uszkodzony, sprzet.do_konserwacji, sprzet.obrazek, sprzet.plec "
                                    + "from sprzet, rodzaje, podtypy, typy where "
                                    + "sprzet.id_rodzaj = rodzaje.id_rodzaj and "
                                    + "rodzaje.id_podtyp = podtypy.id_podtyp and "
                                    + "podtypy.id_typ = typy.id_typ and "
                                    + "typy.nazwa = '" + typ + "' and "
                                    + "podtypy.nazwa = '" + podtyp + "'";
            }
            else if ((typ != "") && (podtyp == "") && (rodzaj == "") && (select == ""))
            {
                //wybrano typ z ograniczeniem czasowym
                command.CommandText = "select sprzet.nazwa, sprzet.id_sprzet, sprzet.cena, sprzet.producent, "
                                    + "sprzet.rozmiar, sprzet.wzrost, sprzet.waga, sprzet.dostepny, "
                                    + "sprzet.uszkodzony, sprzet.do_konserwacji, sprzet.obrazek, sprzet.plec "
                                    + "from sprzet, rodzaje, podtypy, typy where "
                                    + "sprzet.id_rodzaj = rodzaje.id_rodzaj and "
                                    + "rodzaje.id_podtyp = podtypy.id_podtyp and "
                                    + "podtypy.id_typ = typy.id_typ and "
                                    + "typy.nazwa = '" + typ + "'";
            }
            else if ((typ == "") && (podtyp == "") && (rodzaj == "") && (select != ""))
            {
                //wybrano select z ograniczeniem czasowym
                command.CommandText = "select sprzet.nazwa, sprzet.id_sprzet, sprzet.cena, sprzet.producent, "
                                    + "sprzet.rozmiar, sprzet.wzrost, sprzet.waga, sprzet.dostepny, "
                                    + "sprzet.uszkodzony, sprzet.do_konserwacji, sprzet.obrazek, sprzet.plec "
                                    + "from sprzet, rodzaje, podtypy, typy where "
                                    + "sprzet.id_rodzaj = rodzaje.id_rodzaj and "
                                    + "rodzaje.id_podtyp = podtypy.id_podtyp and "
                                    + "podtypy.id_typ = typy.id_typ and "
                                    + "(typy.nazwa like '%" + select + "%' or "
                                    + "podtypy.nazwa like '%" + select + "%' or "
                                    + "rodzaje.nazwa like '%" + select + "%' or "
                                    + "sprzet.nazwa like '%" + select + "%' or "
                                    + "sprzet.producent like '%" + select + "%')";
            }

            #endregion //Ustawianie Zapytań

            Reader = command.ExecuteReader();

            List<Sprzet> lista = new List<Sprzet>();

            string nazwa = null;
            int id_sprzet;
            double cena;
            string producent = null;
            int rozmiar;
            string wzrost = null;
            string waga = null;
            bool dostepny;
            bool uszkodzony;
            bool do_konserwacji;
            char plec;
            byte[] obrazek = null;

            while (Reader.Read())
            {
                //if((SprawdzDostepnosc((int)Reader[1],dataOd,dataDo)) && ((bool)Reader[7]) && (!(bool)Reader[8]) && (!(bool)Reader[9]))
                //{
                    nazwa = Reader[0].ToString();
                    id_sprzet = System.Convert.ToInt32(Reader[1].ToString());
                    cena = System.Convert.ToDouble(Reader[2].ToString());
                    producent = Reader[3].ToString();
                    rozmiar = System.Convert.ToInt32(Reader[4].ToString());
                    wzrost = Reader[5].ToString();
                    waga = Reader[6].ToString();
                    dostepny = System.Convert.ToBoolean(Reader[7].ToString());
                    uszkodzony = System.Convert.ToBoolean(Reader[8].ToString());
                    do_konserwacji = System.Convert.ToBoolean(Reader[9].ToString());
                    plec = System.Convert.ToChar(Reader[11].ToString());
                    try
                    {
                        obrazek = (byte[])Reader[10];
                    }
                    catch (Exception e)
                    {
                        obrazek = null;
                    }
                    lista.Add(new Sprzet(nazwa, id_sprzet, cena, producent, rozmiar, wzrost, waga, dostepny, uszkodzony, do_konserwacji, plec, obrazek));
                //}
            }
            connection.Close();

            Sprzet[] tablica = new Sprzet[lista.Count];
            foreach (Sprzet t in lista)
            {
                tablica[lista.IndexOf(t)] = t;
            }
            return tablica;
        }

        #endregion // GetSprzet (z ograniczeniem czasowym)

        #region GetSprzet (bez ograniczenia czasowego)

        public static Sprzet[] GetSprzet(string typ, string podtyp, string rodzaj, string select)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            connection.Open();

            #region UstawianieZapytań
 
            if ((typ == "") && (podtyp == "") && (rodzaj == "") && (select == ""))
            {
                //wybrano wszystko bez ograniczenia czasowego
                command.CommandText = "select nazwa, id_sprzet, cena, producent, rozmiar, wzrost, waga, dostepny, uszkodzony, do_konserwacji, obrazek, plec from sprzet";
            }
            else if ((typ != "") && (podtyp != "") && (rodzaj != "") && (select == ""))
            {
                //wybrano rodzaj bez ograniczenia czasowego
                command.CommandText = "select sprzet.nazwa, sprzet.id_sprzet, sprzet.cena, sprzet.producent, "
                                    + "sprzet.rozmiar, sprzet.wzrost, sprzet.waga, sprzet.dostepny, "
                                    + "sprzet.uszkodzony, sprzet.do_konserwacji, sprzet.obrazek, sprzet.plec "
                                    + "from sprzet, rodzaje where "
                                    + "sprzet.id_rodzaj = rodzaje.id_rodzaj and "
                                    + "rodzaje.nazwa = '" + rodzaj + "' and "
                                    + "rodzaje.id_podtyp = (select podtypy.id_podtyp from podtypy, typy "
                                    + "where podtypy.nazwa = '" + podtyp + "' and podtypy.id_typ=typy.id_typ and typy.nazwa='" + typ + "')";
            }
            else if ((typ != "") && (podtyp != "") && (rodzaj == "") && (select == ""))
            {
                //wybrano podtyp bez ograniczenia czasowego
                command.CommandText = "select sprzet.nazwa, sprzet.id_sprzet, sprzet.cena, sprzet.producent, "
                                    + "sprzet.rozmiar, sprzet.wzrost, sprzet.waga, sprzet.dostepny, "
                                    + "sprzet.uszkodzony, sprzet.do_konserwacji, sprzet.obrazek, sprzet.plec "
                                    + "from sprzet, rodzaje, podtypy, typy where "
                                    + "sprzet.id_rodzaj = rodzaje.id_rodzaj and "
                                    + "rodzaje.id_podtyp = podtypy.id_podtyp and "
                                    + "podtypy.id_typ = typy.id_typ and "
                                    + "typy.nazwa = '" + typ + "' and "
                                    + "podtypy.nazwa = '" + podtyp + "'";
            }
            else if ((typ != "") && (podtyp == "") && (rodzaj == "") && (select == ""))
            {
                //wybrano typ bez ograniczenia czasowego
                command.CommandText = "select sprzet.nazwa, sprzet.id_sprzet, sprzet.cena, sprzet.producent, "
                                    + "sprzet.rozmiar, sprzet.wzrost, sprzet.waga, sprzet.dostepny, "
                                    + "sprzet.uszkodzony, sprzet.do_konserwacji, sprzet.obrazek, sprzet.plec "
                                    + "from sprzet, rodzaje, podtypy, typy where "
                                    + "sprzet.id_rodzaj = rodzaje.id_rodzaj and "
                                    + "rodzaje.id_podtyp = podtypy.id_podtyp and "
                                    + "podtypy.id_typ = typy.id_typ and "
                                    + "typy.nazwa = '" + typ + "'";
            }
            else if ((typ == "") && (podtyp == "") && (rodzaj == "") && (select != ""))
            {
                //wybrano select bez ograniczenia czasowego
                command.CommandText = "select sprzet.nazwa, sprzet.id_sprzet, sprzet.cena, sprzet.producent, "
                                    + "sprzet.rozmiar, sprzet.wzrost, sprzet.waga, sprzet.dostepny, "
                                    + "sprzet.uszkodzony, sprzet.do_konserwacji, sprzet.obrazek, sprzet.plec "
                                    + "from sprzet, rodzaje, podtypy, typy where "
                                    + "sprzet.id_rodzaj = rodzaje.id_rodzaj and "
                                    + "rodzaje.id_podtyp = podtypy.id_podtyp and "
                                    + "podtypy.id_typ = typy.id_typ and "
                                    + "(typy.nazwa like '%" + select + "%' or "
                                    + "podtypy.nazwa like '%" + select + "%' or "
                                    + "rodzaje.nazwa like '%" + select + "%' or "
                                    + "sprzet.nazwa like '%" + select + "%' or "
                                    + "sprzet.producent like '%" + select + "%')";
            }

            #endregion //Ustawianie Zapytań

            Reader = command.ExecuteReader();

            List<Sprzet> lista = new List<Sprzet>();

            string nazwa = null;
            int id_sprzet;
            double cena;
            string producent = null;
            int rozmiar;
            string wzrost = null;
            string waga = null;
            bool dostepny;
            bool uszkodzony;
            bool do_konserwacji;
            char plec;
            byte[] obrazek = null;

            while (Reader.Read())
            {
                //if (((bool)Reader[7]) && (!(bool)Reader[8]) && (!(bool)Reader[9]))
                //{
                    nazwa = Reader[0].ToString();
                    id_sprzet = System.Convert.ToInt32(Reader[1].ToString());
                    cena = System.Convert.ToDouble(Reader[2].ToString());
                    producent = Reader[3].ToString();
                    rozmiar = System.Convert.ToInt32(Reader[4].ToString());
                    wzrost = Reader[5].ToString();
                    waga = Reader[6].ToString();
                    dostepny = System.Convert.ToBoolean(Reader[7].ToString());
                    uszkodzony = System.Convert.ToBoolean(Reader[8].ToString());
                    do_konserwacji = System.Convert.ToBoolean(Reader[9].ToString());
                    plec = System.Convert.ToChar(Reader[11].ToString());
                    try
                    {
                        obrazek = (byte[])Reader[10];
                    }
                    catch (Exception e)
                    {
                        obrazek = null;
                    }
                    lista.Add(new Sprzet(nazwa, id_sprzet, cena, producent, rozmiar, wzrost, waga, dostepny, uszkodzony, do_konserwacji, plec, obrazek));
                //}
            }
            connection.Close();

            Sprzet[] tablica = new Sprzet[lista.Count];
            foreach (Sprzet t in lista)
            {
                tablica[lista.IndexOf(t)] = t;
            }
            return tablica;
        }

        #endregion // GetSprzet (bez ograniczenia czasowego)

        #region SetImageToSprzet

        public static void SetImageToSprzet(byte[] img, int id)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();

            connection.Open();
            command.CommandText = "update sprzet set obrazek = @PImage where id_sprzet = " + id;
            command.Parameters.Add(new SqlParameter("@PImage", SqlDbType.Image)).Value = img;
            command.ExecuteNonQuery();     
        }

        #endregion //SetImageToSprzet

        #region DeleteImageFromSprzet

        public static void DeleteImageFromSprzet(int id)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();

            Console.WriteLine("deleting");
            connection.Open();
            command.CommandText = "update sprzet set obrazek = NULL where id_sprzet = " + id;
            command.ExecuteNonQuery();
        }

        #endregion //DeleteImageFromSprzet

        #region GetImageFromSprzet

        public static byte[] GetImageFromSprzet(int id)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            byte[] b = null;

            connection.Open();
            command.CommandText = "select obrazek from sprzet where id_sprzet = " +id;
            Reader = command.ExecuteReader();

            try
            {
                while (Reader.Read())
                {
                    b = (byte[])Reader[0];
                }
            }
            catch (Exception e)
            {
                b = null;
            }
            connection.Close();

            return b;
        }

        #endregion // GetImageFromSprzet

        #region SprawdzDostepnoscSprzetuWOkresie

        public static bool SprawdzDostepnosc(int idSprzetu, DateTime dataOd, DateTime dataDo)
        {
            //WAŻNE! Zbychu, koniecznie zrób tę funkcję do sprawdzania dostępności!!!
            //już zrobiona
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            bool b = true;

            connection.Open();
            command.CommandText = "select rezerwacja_od, rezerwacja_do from sz where id_sprzet = " + idSprzetu;
            Reader = command.ExecuteReader();

            DateTime zamPocz;
            DateTime zamKon;
            DateTime pocz = new DateTime(dataOd.Year, dataOd.Month, dataOd.Day);
            DateTime kon = new DateTime(dataDo.Year, dataDo.Month, dataDo.Day);

            while (Reader.Read())
            {
                //if ((((DateTime)Reader[0] >= dataOd.AddDays(-1)) && ((DateTime)Reader[0] < dataDo)) || (((DateTime)Reader[1] >= dataOd.AddDays(-1)) && ((DateTime)Reader[1] < dataDo)) || (((DateTime)Reader[0] <= dataOd.AddDays(-1)) && ((DateTime)Reader[1] > dataDo)))
                zamPocz = new DateTime(((DateTime)Reader[0]).Year,((DateTime)Reader[0]).Month,((DateTime)Reader[0]).Day);
                zamKon = new DateTime(((DateTime)Reader[1]).Year, ((DateTime)Reader[1]).Month, ((DateTime)Reader[1]).Day);

                if ((zamPocz >= pocz) && (zamPocz <= kon) || (zamKon >= pocz) && (zamKon <= kon) || (zamPocz <= pocz) && (zamKon >= kon))
                {
                    b = false;
                }
            }
            connection.Close();

            return b;
        }

        #endregion // SprawdzDostepnoscSprzetuWOkresie

        #region SetUzytkownik

        public static void setUzytkownik(string imie, string nazwisko, string pesel, string adres, bool czarna_lista, int raz, bool zweryfikowano, string login, string haslo, string telefon, string email)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();

            connection.Open();
            command.CommandText = "insert into uzytkownicy (imie, nazwisko, pesel, adres, czarna_lista, raz, zweryfikowano, login, haslo, telefon, email) values "
                                 +"('"+imie+"','"+nazwisko+"','"+pesel+"','"+adres+"','"+czarna_lista+"',"+raz+",'"+zweryfikowano+"','"+login+"','"+haslo+"','"+telefon+"','"+email+"')";
            command.ExecuteNonQuery();
        }

        #endregion //SetUzytkownik

        //Od tego miejsca w dół jest dodany nowy kod

        #region GetUserId

        public static int GetUserId(string login)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            connection.Open();

            command.CommandText = "select id_uzytkownik from uzytkownicy where login = '" + login + "'";
            Reader = command.ExecuteReader();
            Reader.Read();
            int result = System.Convert.ToInt32(Reader[0].ToString());

            connection.Close();

            return result;
        }

        #endregion //GetUserId

        #region wyslijZamowienie

        public static void wyslijZamowienie(List<Sprzet> ListaSprzetow, List<czas> ListaCzasow, int id_uzytkownik)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            //Wyznaczanie wartosci zamowienia
            double wartosc = 0;
            int i = 0;
            TimeSpan odlegloscCzasowa;
            foreach (Sprzet element in ListaSprzetow)
            {
                odlegloscCzasowa = ListaCzasow[i].dataDo - ListaCzasow[i].dataOd;
                wartosc += (odlegloscCzasowa.Days + 1) * element.SpCena;
                i++;
            }

            connection.Open();

            //Wprowadzanie danych do tabeli rez_wyp (nowego zamowienia)
            command.CommandText = "insert into rez_wyp (id_uzytkownik, id_pracownik, koszt, status) values"
                                + " ('" + id_uzytkownik.ToString() + "','1','" + wartosc.ToString().Replace(",", ".") + "','0')";
            command.ExecuteNonQuery();

            connection.Close();

            //Odnajdywanie maksymalnego id_rezerwacja
            int max_rez = 1;

            connection.Open();
            command.CommandText = "select count(id_rezerwacja) from rez_wyp";
            Reader = command.ExecuteReader();
            Reader.Read();
            if (System.Convert.ToInt32(Reader[0].ToString()) == 0) { }
            else
            {
                connection.Close();
                connection.Open();
                command.CommandText = "select max(id_rezerwacja) from rez_wyp";
                Reader = command.ExecuteReader();
                Reader.Read();
                if (Reader.HasRows) max_rez = System.Convert.ToInt32(Reader[0].ToString());
            }

            connection.Close();
            connection.Open();

            //Wpisywanie danych do tabeli sz (sprzetow do nowego zamowienia)
            for (int j = 0; j < ListaSprzetow.Count; j++)
            {
                command.CommandText = "insert into sz (id_sprzet, id_rezerwacja, rezerwacja_od, rezerwacja_do) values "
                                     + "('" + ListaSprzetow[j].SpId.ToString() + "','" + max_rez.ToString() + "','" + ListaCzasow[j].dataOd.Day.ToString() + "/" + ListaCzasow[j].dataOd.Month.ToString() + "/" + ListaCzasow[j].dataOd.Year.ToString() + "','" + ListaCzasow[j].dataDo.Day.ToString() + "/" + ListaCzasow[j].dataDo.Month.ToString() + "/" + ListaCzasow[j].dataDo.Year.ToString() + "')";
                command.ExecuteNonQuery();
            }
        }

        #endregion //wyslijZamowienie

        #region czyUzytkownikNaCzarnejLiscie

        public static bool czyUzytkownikNaCzarnejLiscie(string login)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            connection.Open();

            command.CommandText = "select czarna_lista from uzytkownicy where login = '" + login + "'";
            Reader = command.ExecuteReader();
            Reader.Read();
            bool result = (bool)Reader[0];

            connection.Close();

            return result;
        }

        public static bool czyUzytkownikNaCzarnejLiscie(int id_uzytkownik)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            connection.Open();

            command.CommandText = "select czarna_lista from uzytkownicy where id_uzytkownik = '" + id_uzytkownik.ToString() + "'";
            Reader = command.ExecuteReader();
            Reader.Read();
            bool result = (bool)Reader[0];

            connection.Close();

            return result;
        }

        #endregion //czyUzytkownikNaCzarnejLiscie

        //nowa funkcja

        #region GetKaryIUstalenia

        public static double getKaryIUstalenia(string nazwa)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            connection.Open();
            command.CommandText = "select wartosc from kary_ustalenia where nazwa = '" + nazwa + "'";
            Reader = command.ExecuteReader();
            Reader.Read();
            double result = (double)Reader[0];

            connection.Close();

            return result;
        }

        #endregion // GetKaryIUstalenia

        #region ChangeUszkodzony

        public static void ChangeUszkodzony(int id, bool stan)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();

            connection.Open();
            command.CommandText = "update sprzet set uszkodzony = '" + stan + "' where id_sprzet = " + id;
            command.ExecuteNonQuery();
        }

        #endregion //ChangeUszkodzony

        #region ChangeDoKonserwacji

        public static void ChangeDoKonserwacji(int id, bool stan)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();

            connection.Open();
            command.CommandText = "update sprzet set do_konserwacji = '" + stan + "' where id_sprzet = " + id;
            command.ExecuteNonQuery();
        }

        #endregion //ChangeDoKonserwacji

        #region UsunSprzet

        public static void UsunSprzet(int id)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();

            connection.Open();
            command.CommandText = "delete from sprzet where id_sprzet = " + id;
            command.ExecuteNonQuery();
        }

        #endregion //UsunSprzet

        #region SetSprzet

        public static void setSprzet(string rodzaj, string podtyp, string typ, double cena, string nazwa, string producent, string rozmiar, string wzrost, string waga, bool dostepny, bool uszkodzony, bool do_konserwacji, byte[] obrazek, string plec)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            int id_rodzaj = 0;

            connection.Open();
            command.CommandText = "select rodzaje.id_rodzaj from rodzaje, podtypy, typy where " +
                                  "podtypy.id_podtyp=rodzaje.id_podtyp and typy.id_typ=podtypy.id_typ and " +
                                  "typy.nazwa = '" + typ + "' and podtypy.nazwa = '" + podtyp + "' and rodzaje.nazwa = '" + rodzaj + "'";
            Reader = command.ExecuteReader();

            while (Reader.Read())
            {
                id_rodzaj = (Int16)Reader[0];
            }

            Reader.Close();

            command.CommandText = "insert into sprzet (id_rodzaj, cena, nazwa, producent, rozmiar, wzrost, waga, dostepny, uszkodzony, do_konserwacji, obrazek, plec) values "
                                 + "(" + id_rodzaj + "," + cena + ",'" + nazwa + "','" + producent + "','" + rozmiar + "','" + wzrost + "','" + waga + "','" + dostepny + "','" + uszkodzony + "','" + do_konserwacji + "', @PImage,'" + plec + "')";
            command.Parameters.Add(new SqlParameter("@PImage", SqlDbType.Image)).Value = obrazek;
            command.ExecuteNonQuery();
            connection.Close();
        }

        public static void setSprzet(string rodzaj, string podtyp, string typ, double cena, string nazwa, string producent, string rozmiar, string wzrost, string waga, bool dostepny, bool uszkodzony, bool do_konserwacji, string plec)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();
            SqlDataReader Reader;

            int id_rodzaj = 0;

            connection.Open();
            command.CommandText = "select rodzaje.id_rodzaj from rodzaje, podtypy, typy where " +
                                  "podtypy.id_podtyp=rodzaje.id_podtyp and typy.id_typ=podtypy.id_typ and " +
                                  "typy.nazwa = '" + typ + "' and podtypy.nazwa = '" + podtyp + "' and rodzaje.nazwa = '" + rodzaj + "'";
            Reader = command.ExecuteReader();

            while (Reader.Read())
            {
                id_rodzaj = (Int16)Reader[0];
            }

            Reader.Close();

            command.CommandText = "insert into sprzet (id_rodzaj, cena, nazwa, producent, rozmiar, wzrost, waga, dostepny, uszkodzony, do_konserwacji, plec) values "
                                 + "(" + id_rodzaj + "," + cena + ",'" + nazwa + "','" + producent + "','" + rozmiar + "','" + wzrost + "','" + waga + "','" + dostepny + "','" + uszkodzony + "','" + do_konserwacji + "','" + plec + "')";
            command.ExecuteNonQuery();
            connection.Close();
        }

        #endregion //SetSprzet

        #region EditSprzet

        public static void EditSprzet(int id, string nazwa, string producent, double cena)
        {
            SqlConnection connection = new SqlConnection(Baza.Properties.Settings.Default.conStr);
            SqlCommand command = connection.CreateCommand();

            connection.Open();
            command.CommandText = "update sprzet set nazwa = '" + nazwa + "', producent = '" + producent + "', cena = " + cena + " where id_sprzet = " + id;
            command.ExecuteNonQuery();
        }

        #endregion //EditSprzet
    }
}
